String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
};

function IsNumeric(strString) {
	var strValidChars = "0123456789";
	var strChar;
	var result = true;

	if (strString.length == 0)
		return true;

	for ( var i = 0; i < strString.length && result == true; i++) {
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1) {
			result = false;
		}
	}
	return result;
}

function checkFile(id) {
	var x = document.getElementById(id).value;
	var span = "error" + capitaliseFirstLetter(id);
	var extension = x.split('.').pop();
	if (extension == "gif" || extension == "png" || extension == "jpg"
			|| extension == "GIF" || extension == "PNG" || extension == "JPG") {
		document.getElementById(span).textContent = "";
		rmRed(id);
		return true;
	} else {
		document.getElementById(span).textContent = "inserisci un immagine valida, gif jpg o png";
		addRed(id);
		return false;
	}
}

function checked1(id) {
	var span = "error" + capitaliseFirstLetter(id);
	document.getElementById(span).textContent = "";
}

function checkRadio(name) {
	for ( var i = 0; i < document.getElementsByName(name).length; i++) {
		if (document.getElementsByName(name)[i].checked) {
			return true;
		}
	}
	var span = "error" + capitaliseFirstLetter(name);
	document.getElementById(span).textContent = "devi selezionare una " + name;
	return false;
}

function validateForm(emptyAllowed) {
	var x = checkPorte(emptyAllowed);
	x = checkAnno(emptyAllowed) && x;
	x = checkCilindrata(emptyAllowed) && x;
	x = checkCavalli(emptyAllowed) && x;
	x = checkKm(emptyAllowed) && x;
	x = checkPrezzo(emptyAllowed) && x;

	if (!emptyAllowed) {
		x = isEmpty("casa") && x;
		x = isEmpty("modello") && x;
		x = isEmpty("optional") && x;
		x = isEmpty("descrizione") && x;
		x = isEmpty("alt") && x;
		x = checkRadio("sede") && x;
		x = checkNuovo(false) && x;
		x = checkFile("filename") && x;
	}

	return x;
}

function addRed(id) {
	document.getElementById(id).setAttribute('style',
			'box-shadow: 0px 0px 5px 3px rgba(255, 0, 0, 1); ');
}
function rmRed(id) {
	document.getElementById(id).removeAttribute('style');
}

function capitaliseFirstLetter(string) {
	return string.charAt(0).toUpperCase() + string.slice(1);
}

function isEmpty(id) {
	var x = document.getElementById(id).value.trim();
	var span = "error" + capitaliseFirstLetter(id);
	if (x.length === 0) {
		document.getElementById(span).textContent = id
				+ " non deve essere vuoto";
		addRed(id);
		return false;
	} else {
		document.getElementById(span).textContent = "";
		rmRed(id);
		return true;
	}

}

function checkPorte(emptyAllowed) {
	var x = document.getElementById("porte").value.trim();
	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorPorte").textContent = "porte non deve essere vuoto";
		addRed("porte");
		return false;
	}
	if (x.length === 0 && emptyAllowed) {
		document.getElementById("errorPorte").textContent = "";
		rmRed("porte");
		return true;
	}
	var ok = false;
	if (IsNumeric(x)) {
		if (x == 2 || x == 3 || x == 5 || x == 7) {
			document.getElementById("errorPorte").textContent = "";
			rmRed("porte");
			ok = true;
			return true;
		}
	}
	if (!ok) {
		addRed("porte");
		document.getElementById("errorPorte").innerHTML = "porte pu&ograve; essere solo: 2 3 5 7";
		return false;
	}

}

function checkAnno(emptyAllowed) {
	var x = document.getElementById("anno").value.trim();
	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorAnno").textContent = "anno non deve essere vuoto";
		addRed("anno");
		return false;
	}
	if (!IsNumeric(x)) {
		document.getElementById("errorAnno").textContent = "anno deve essere un numero intero positivo";
		addRed("anno");
		return false;
	} else {
		document.getElementById("errorAnno").textContent = "";
		rmRed("anno");
		return true;
	}
}

function checkCilindrata(emptyAllowed) {
	var x = document.getElementById("cilindrata").value.trim();
	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorCilindrata").textContent = "cilindrata non deve essere vuoto";
		addRed("cilindrata");
		return false;
	}
	if (!IsNumeric(x)) {
		document.getElementById("errorCilindrata").textContent = "cilindrata deve essere un numero intero positivo";
		addRed("cilindrata");
		return false;
	} else {
		document.getElementById("errorCilindrata").textContent = "";
		rmRed("cilindrata");
		return true;
	}
}

function checkCavalli(emptyAllowed) {
	var x = document.getElementById("cavalli").value.trim();
	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorCavalli").textContent = "cavalli non deve essere vuoto";
		addRed("cavalli");
		return false;
	}
	if (!IsNumeric(x)) {
		document.getElementById("errorCavalli").textContent = "cavalli deve essere un numero intero positivo";
		addRed("cavalli");
		return false;
	} else {
		document.getElementById("errorCavalli").textContent = "";
		rmRed("cavalli");
		return true;
	}
}

function checkKm(emptyAllowed) {
	var x = document.getElementById("km").value.trim();

	var val = "";
	for ( var i = 0; i < document.getElementsByName("nuovo").length; i++) {
		if (document.getElementsByName("nuovo")[i].checked) {
			val = document.getElementsByName("nuovo")[i].value;
		}
	}

	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorKm").textContent = "km non deve essere vuoto";
		addRed("km");
		return false;
	}
	if (!IsNumeric(x)) {
		document.getElementById("errorKm").textContent = "km deve essere un numero intero positivo";
		addRed("km");
		return false;
	} else {
		if (val == "true") {
			if (x == 0) {
				document.getElementById("errorKm").textContent = "";
				rmRed("km");
				return true;
			} else {
				document.getElementById("errorKm").textContent = "le auto nuove devono avere zero kilometri";
				addRed("km");
				return false;
			}
		} else {
			document.getElementById("errorKm").textContent = "";
			rmRed("km");
			return true;
		}
	}
}

function checkPrezzo(emptyAllowed) {
	var x = document.getElementById("prezzo").value.trim();
	if (x.length === 0 && !emptyAllowed) {
		document.getElementById("errorPrezzo").textContent = "prezzo non deve essere vuoto";
		addRed("prezzo");
		return false;
	}
	if (!IsNumeric(x)) {
		document.getElementById("errorPrezzo").textContent = "prezzo deve essere un numero intero positivo";
		addRed("prezzo");
		return false;
	} else {
		document.getElementById("errorPrezzo").textContent = "";
		rmRed("prezzo");
		return true;
	}
}

function checkNuovo(emptyAllowed) {

	// checkRadio("nuovo");
	var val = "";
	for ( var i = 0; i < document.getElementsByName("nuovo").length; i++) {
		if (document.getElementsByName("nuovo")[i].checked) {
			val = document.getElementsByName("nuovo")[i].value;
		}
	}
	if (!emptyAllowed && val == "") {
		document.getElementById("errorNuovo").textContent = "devi selezionare nuova oppure usata";
		return false;
	} else {
		document.getElementById("errorNuovo").textContent = "";
		if (val == "true") {
			var km = document.getElementById("km").value.trim();
			if (km == "") {
				// document.getElementById("km").value = "0";
				// rmRed("km");
			} else {
				if (km != 0) {
					document.getElementById("errorKm").textContent = "le auto nuove devono avere zero kilometri";
					addRed("km");
				} else {
					document.getElementById("errorKm").textContent = "";
					rmRed("km");
				}
			}
		} else {
			if (document.getElementById("errorKm").textContent == "le auto nuove devono avere zero kilometri") {
				document.getElementById("errorKm").textContent = "";
				rmRed("km");
			}
		}
	}
}